package com.itheima.utnil;

import io.jsonwebtoken.*;

import java.util.Date;
import java.util.Map;

public class JwtUtils {

    private static String signKey = "chenyefeng==";
//    在生成 JWT 时会设置一个过期时间，确保 token 不是一次签发永久有效，从而提升安全性。
    private static Long expire = 24544000055550L;
//是 JJWT 提供的一个工具类，用于操作 JWT。
    public  static  String generateJwt(Map<String,Object> payLoad){
        return Jwts.builder()
                .signWith(SignatureAlgorithm.HS256,signKey)
                .addClaims(payLoad)
                .setExpiration(new Date(System.currentTimeMillis()+expire))
                .compact();

    }
    /**
     * 解析JWT令牌
     * @param jwt JWT令牌
     * @return JWT第二部分负载 payload 中存储的内容
     */
    public static Map<String, Object> parseJwt(String jwt) {
        Claims body=null;
        try {
            body= Jwts.parser()
//                    验证秘钥
                    .setSigningKey(signKey)
//                    解析令牌(头,载荷,签名)
                    .parseClaimsJws(jwt)
//                    获取载荷
                    .getBody();
        } catch (Exception e) {
            throw new RuntimeException(e);


        }
        return body;
    }



}
